n, s, v = int(input()), 0, 0
a = list(map(int, input().split()))
for ai, bi in zip(a, sorted(a)):
s += bi - ai
v += not s
print(v)
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pii pair<int, int>
#define pll pair<ll int, ll int>
#define ff first
#define ss second
#define pb push_back
#pragma GCC optimize("O2")
using namespace std;
// debug template
#ifdef POTATO
#include "debug.h"
#define debug(...) cerr << "[" << #__VA_ARGS__ << "] = ["; _print(__VA_ARGS__)
#else
#define debug(...)
#endif
// convenient functions
inline void yes() { cout << "YES\n"; return; }
inline void no() { cout << "NO\n"; return; }
template <class T>
inline void out(T temp) { cout << temp << '\n'; return; }
// globals
void init() {
// initialize
}
void solve() {
// solve
int n; cin >> n;
int a[n + 1];
for (int i = 1; i <= n; i++) cin >> a[i];
int pref[n + 2], suff[n + 2];
pref[0] = 0;
for (int i = 1; i <= n; i++) pref[i] = max(pref[i - 1], a[i]);
suff[n + 1] = 1.5e9;
for (int i = n; i >= 1; i--) suff[i] = min(suff[i + 1], a[i]);
int ans = 0;
for (int i = 1; i <= n; i++) {
ans += (pref[i] <= suff[i + 1]);
}
out(ans);
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
srand(time(NULL));
#ifdef POTATO
auto start = chrono::high_resolution_clock::now();
#endif
init();
int t = 1;
// cin >> t;
while (t--) solve();
#ifdef POTATO
auto end = chrono::high_resolution_clock::now();
cerr << "Execution time: "
<< chrono::duration_cast<chrono::milliseconds>(end - start).count()
<< " ms" << endl;
#endif
}
/*
*/
435. Non-overlapping Intervals | 406. Queue Reconstruction by Height |
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |